#include "MotorJuegoFactory.h"
#include "MotorDesplazamiento.h"
#include "MotorAtaque.h"
#include "MotorLanzadorPajaritos.h"
#include "MotorColisiones.h"

using namespace TP::Juego::Motorizacion;

MotorJuegoFactory::MotorJuegoFactory() { }

MotorJuegoFactory::~MotorJuegoFactory() { }

MotorJuego* MotorJuegoFactory::crear(Reloj* pReloj) {
	// Instancio el motor de juego.
	MotorJuego* motor = new MotorJuego();
	pReloj->addTemporizable((ITemporizable*)motor);

	// Configuro el motor de desplazamiento en el motor de juego.
	motor->_motorDesplazamiento = (MotorJuego*) new MotorDesplazamiento();
	((MotorDesplazamiento*)motor->_motorDesplazamiento)->_motorJuego = motor;
	pReloj->addTemporizable((ITemporizable*)motor->_motorDesplazamiento);

	// Configuro el motor de ataque en el motor de juego.
	motor->_motorAtaque = (MotorJuego*) new MotorAtaque();
	((MotorAtaque*)motor->_motorAtaque)->_motorJuego = motor;
	pReloj->addTemporizable((ITemporizable*)motor->_motorAtaque);

	motor->_MotorColisiones = (MotorColisiones*) new MotorColisiones();
	((MotorColisiones*)motor->_MotorColisiones)->motorJuego = motor;
	pReloj->addTemporizable((ITemporizable*)motor->_MotorColisiones);

	motor->_MotorLanzadorPajaritos = (MotorLanzadorPajaritos*) new MotorLanzadorPajaritos();
	((MotorLanzadorPajaritos*)motor->_MotorLanzadorPajaritos)->_motorJuego = motor;
	pReloj->addTemporizable((ITemporizable*)motor->_MotorLanzadorPajaritos);

	return motor;
}